<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        var obj = {
            name:'明安瑞',
            age:18,
            score:3
        };


        // in 关键字  

        // 语法 
        //  字符串 in 对象名   举例  'name' in obj 
        //  结果 布尔值  
        // true  该字符串是对象的一个key  
        // false 该字符串不是对象的一个key  



        // console.log('name' in obj);
        // console.log('age' in obj);
        // console.log('score' in obj);
        // console.log('gender' in obj);

        //只能判断键是否在对象中  不能判断值是否在对象中 


        // var name = obj.name;
        // var age = obj.age;
        // var score = obj.score;


        // 每次都写上  obj. 
        // 如何省略 


        // with语句  简化对象的查操作  

        // with(obj){
        //     var name1 = name;
        //     var age2 = age;
        //     var score2 = score;
        // }


        // console.log(name1,age2,score2);








        // 一箱苹果  挨个把苹果 从箱子中取出来 
        // 这就是 遍历 


        // 对象只能根据键取值 不能根据值取键   
        // 对象的遍历 
        // for  in 

        // for(var 变量  in 对象名){
        // 有几个键值对  就循环多少次 
        // 随着循环 变量中存放 每个键值对的键 
        // 随着循环 对象名[变量]  表示键值对的值
        // }

        
        for(var k in obj){
            // 循环第一次  k 是 name  obj[k] 明安瑞
            // 循环第二次  k 是 age   obj[k] 18
            // 循环第三次  k 是 score   obj[k] 3

            console.log('我执行了',k,obj[k])
        }


        // 封装一个函数求一个数字的阶乘


        // 10!   10*9*8*7*6*5*4*3*2*1
        // 9!     9*8*7*6*5*4*3*2*1
        // 8!     8*7*6*5*4*3*2*1
        //  ...

        // 1!      

        function Factorial(num){
            var product = 1
            for(var i=num;i>=1;i--){
                product *= i
            }

            return product
        }

        // Factorial(10)

        // 10   10!+9!+...+1
        // 8    8!+7!+...1
        function sum_facotrial(num){
            var sum = 0;
            for(var i=num;i>=1;i--){
                // console.log(i)// 11 .... 1
                sum += Factorial(i);
            }

            return sum;
        }
        // 10!+9!+8!+7!+..+1!

        sum_facotrial(11);

    </script>
</body>
</html>